> ## Documentation Index
> Fetch the complete documentation index at: https://sequence-0fb8d9e6-api_docs.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Wallet transaction history

## Fetch the transaction history for any wallet address

Fetches the transaction / token history for any wallet address of any ERC20, ERC721 and ERC1155 token.
The response includes decoded transaction details for easy consumption / rendering.

*Sequence Indexer `GetTransactionHistory` Method:*

* Request: POST /rpc/Indexer/GetTransactionHistory
* Content-Type: application/json
* Body (in JSON):
  * `filter` (object)
    * `accountAddress` (string) -- the wallet account address
    * `contractAddress` (string) -- optionally specify a contract address to filter
    * `accountAddresses` (string array) -- optionally specify a list of wallet account addresses
    * `contractAddresses` (string array) -- optionally specify a list of contract address
    * `transactionHashes` (string array) -- optionally specify a list of transaction hashes
    * `metaTransactionIDs` (string array) -- optionally specify a list of meta transaction IDs
  * `includeMetadata` (boolean - optional - default: false) -- toggle token metadata to be included in the response
  * `metadataOptions` (object - optional) -- additional options for metadata
    * `verifiedOnly` (boolean - optional) -- return only contracts which are 'verified' to help reduce spam
    * `includeContracts` (\[]string - optional) -- list of specific contract addresses to always be included, even if verifiedOnly is enabled.

<br />

<Note>
  Wallet transaction history retention with the Indexer is 30 days for all networks (with the exception of `arbitrum-sepolia` which is 20 days).
</Note>

**Example: `GetTransactionHistory` of a wallet account address on Polygon using an `API_ACCESS_KEY`**

<CodeGroup>
  ```bash cURL theme={null}
  curl -X POST -H "Content-Type: application/json" -H "X-Access-Key: AQAAAAAAAF_JvPALhBthL7VGn6jV0YDqaFY" https://polygon-indexer.sequence.app/rpc/Indexer/GetTransactionHistory -d '{ "filter": { "accountAddress": "0x8e3E38fe7367dd3b52D1e281E4e8400447C8d8B9" }, "includeMetadata": true }'
  projectAccessKey
  ```

  ```ts Typescript theme={null}
  // Works in both a Webapp (browser) or Node.js:
  import { SequenceIndexer } from '@0xsequence/indexer'

  const indexer = new SequenceIndexer('https://polygon-indexer.sequence.app', 'AQAAAAAAAF_JvPALhBthL7VGn6jV0YDqaFY')

  // try any account address you'd like :)
  const filter = {
  	accountAddress: "0xabc..."
  }

  // query Sequence Indexer for all token transaction history on Polygon
  const transactionHistory = await indexer.getTransactionHistory({
  	filter: filter,
  	includeMetadata: true
  })
  	
  console.log('transaction history in account:', transactionHistory)
  ```

  ```go Go theme={null}
  import (
  	"context"
  	"fmt"
  	"log"
  	"net/http"

  	"github.com/0xsequence/go-sequence/indexer"
  )

  func GetTransactionHistory(accountAddress string) {
  	seqIndexer := indexer.NewIndexer("https://polygon-indexer.sequence.app", "AQAAAAAAAF_JvPALhBthL7VGn6jV0YDqaFY")

  	filter := &indexer.TransactionHistoryFilter{
  		AccountAddress: &accountAddress,
  	}

  	metadataOptions := indexer.MetadataOptions{
  		VerifiedOnly:     true, // Set to true if you want to fetch only verified contracts
  		UnverifiedOnly:   false,
  		IncludeContracts: nil, // Provide a list of specific contracts to include, if any
  	}

  	_, history, err := seqIndexer.GetTransactionHistory(context.Background(), filter, nil, nil, &metadataOptions)
  	if err != nil {
  		log.Fatal(err)
  	}
  	fmt.Println("transaction history:", history)
  }
  ```
</CodeGroup>
